Este módulo passa de caminhos estáticos para ferramentas dinâmicas baseadas em eventos ao manipular o CanvasRenderingContext2D estado. Focamos em expandir as capacidades da aplicação por meio de padrões de ordem superior e filtragem matemática.
1. Padrões de Ferramentas de Ordem Superior
Ferramentas como tools.Line abstrai eventos do mouse usando ajudantes como trackDrag. Por outro lado, tools.Spray implementa repetição baseada em intervalos por meio de setInterval, permitindo a colocação contínua de pixels enquanto o mouse estiver pressionado.
2. Restrições Matemáticas
Um deslocamento aleatório simples cria uma distribuição quadrada. Para obter um efeito de pincel circular natural, usamos o teorema de Pitágoras para filtrar pontos: $x^2 + y^2 < r^2$. Alternativamente, poderia-se usar coordenadas polares com Math.sin e Math.cos para conversão.
3. Operações Compostas & Estado
Além dos traços padrão, a propriedade globalCompositeOperation define como os novos pixels interagem com os existentes. Por exemplo, definir como 'destination-out' permite que a função tools.Erase torne os pixels transparentes em vez de apenas pintá-los de branco. Controles de interface como controls.color e controls.brushSize fornecem atualizações em tempo real para fillStyle e lineWidth respectivamente.
lineCap controla a forma das extremidades dos traços, essencial para desenhos suaves.